package com.hivelog.ponto.domain;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import com.hivelog.ponto.utils.PontoUtils;

public class Colaborador {
	
	private String eMail;
	private Cargo cargo;
	
	//mapas com os pontos organizados por dia
	private HashMap<Integer, Ponto> map;
	
	public Colaborador(String email){
		setEmail(email);
		setCargo(PontoUtils.getColaboradorCargo(email));
		map = new HashMap<Integer, Ponto>();
	}
	
	public Ponto getOrCreatePonto(Date date, Colaborador col){
		int day = PontoUtils.getDateDay(date);
	
		Ponto p = null;
		if (map.containsKey(day)) {
			p = map.get(day);
		} else {
			p = new Ponto(date, col);
			map.put(day, p);
		}
		
		return p;
	}
	
	@Override
	public int hashCode() {
		return eMail.hashCode();
	}

	public String geteMail() {
		return eMail;
	}

	public void setEmail(String eMail) {
		this.eMail = eMail;
	}

	public Cargo getCargo() {
		return cargo;
	}

	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}

	public HashMap<Integer, Ponto> getPontoMap() {
		return map;
	}

	public List<Ponto> getOrderedPontoList() {
		
		Ponto[] pArray = map.values().toArray(new Ponto[1]);
		List<Ponto> pontoList = new ArrayList<Ponto>();
		
		for (Ponto ponto : pArray) {
			pontoList.add(ponto);
		}
		
		Collections.sort(pontoList);
		return pontoList;
	}
	
	public Date getUmDia(){
		
		Date d = null;
		map = getPontoMap();
		
		if (map.size()>0) {
			d = map.values().iterator().next().getDia();
		}
		return d;
	}
	
	
	
	

}
